﻿' ******************************************************************************
' ** 
' **  Yahoo! Managed
' **  Written by Marius Häusler 2011
' **  It would be pleasant, if you contact me when you are using this code.
' **  Contact: YahooFinanceManaged@gmail.com
' **  Project Home: http://code.google.com/p/yahoo-finance-managed/
' **  
' ******************************************************************************
' **  
' **  Copyright 2011 Marius Häusler
' **  
' **  Licensed under the Apache License, Version 2.0 (the "License");
' **  you may not use this file except in compliance with the License.
' **  You may obtain a copy of the License at
' **  
' **    http://www.apache.org/licenses/LICENSE-2.0
' **  
' **  Unless required by applicable law or agreed to in writing, software
' **  distributed under the License is distributed on an "AS IS" BASIS,
' **  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' **  See the License for the specific language governing permissions and
' **  limitations under the License.
' ** 
' ******************************************************************************


Namespace YahooManaged.Geo.GeoPlanet


    Public Class GeoPlaceData
        Implements IPlace

        Public ReadOnly Property Address As String Implements IPlace.Address
            Get
                Return Me.Name
            End Get
        End Property
        Public Property Radius As Integer Implements IPlace.Radius
            Get
                With Me.BoundingBox
                    Dim a = Math.Abs(.NorthWest.Latitude - .SouthWest.Latitude) / 180 * 42000
                    Dim b = Math.Abs(.SouthWest.Longitude - .SouthEast.Longitude) / 360 * 42000
                    Dim c As Double = (Math.Sqrt(a ^ 2 + b ^ 2) / 2) * 1000
                    Return CInt(c)
                End With
            End Get
            Set(ByVal value As Integer)
                Throw New NotSupportedException("Setting a value is not supported")
            End Set
        End Property
        Public Property Name As String = String.Empty
        Public Property Type As PlaceType = PlaceType.Undefined Implements IPlace.WOEType
        Public Property WOEID As Long = -1 Implements IPlace.WOEID
        Public Property Center As Coordinates Implements IPlace.Position
        Public Property BoundingBox As CoordinatesRectangle Implements IPlace.BoundingBox
        Public Property PostalCode As String = String.Empty Implements IPlace.ZipCode
        Public Property Country As AdminArea
        Public Property LocalAdmin As LocalAdminArea
        Public Property RegionalAdmin As RegionalAdminArea
        Public Property FederalAdmin As FederalAdminArea
        Public Property Locality1 As Locality
        Public Property Locality2 As Locality
        Public Property AreaInSquareKilometers As ValueRange
        Public Property PopulationCount As ValueRange

    End Class




End Namespace